package com.luo.chengrui.module.sa.service.person;

import java.util.*;
import javax.validation.*;

import com.luo.chengrui.module.sa.controller.admin.person.vo.*;
import com.luo.chengrui.module.sa.dal.dataobject.person.PersonDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import com.luo.chengrui.module.sa.dal.dataobject.person.PersonSyncDO;

/**
 * 人员  Service 接口
 *
 * @author 诚睿
 */
public interface PersonService {

    String DEFAULT_PASSWORD = "abc123456";

    /**
     * 创建人员
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createPerson(@Valid PersonCreateReqVO createReqVO);

    /**
     * 更新人员
     *
     * @param updateReqVO 更新信息
     */
    void updatePerson(@Valid PersonUpdateReqVO updateReqVO);

    /**
     * 删除人员
     *
     * @param id 编号
     */
    void deletePerson(String id);

    /**
     * 获得人员
     *
     * @param id 编号
     * @return 人员
     */
    PersonDO getPerson(String id);

    /**
     * 获得人员 列表
     *
     * @param ids 编号
     * @return 人员 列表
     */
    List<PersonDO> getPersonList(Collection<String> ids);

    /**
     * 获得人员 分页
     *
     * @param pageReqVO 分页查询
     * @return 人员 分页
     */
    PageResult<PersonDO> getPersonPage(PersonPageReqVO pageReqVO);

    /**
     * 获得人员 列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 人员 列表
     */
    List<PersonDO> getPersonList(PersonExportReqVO exportReqVO);

    List<PersonSyncDO> getSyncPersonList();

    PersonDO getPersonBySystemUserId(Long systemUserId);

    List<String> getPersonFullIdsBySystemUserIdFromCache(Long systemUserId);

    PersonInfoVO getLoginPersonInfo();

    PersonInfoVO getPersonInfo(String personId);

    /**
     * 维护人员主岗位信息，当主岗位为空时更新
     *
     * @param personId
     * @param parentId
     */
    void repairMainOrgId(String personId, String parentId);

}
